from openpyxl import load_workbook
#字典结构：{'键值': {'功能码':row[1], '操作2':row[2], '数据量N':row[3], '参数1'::row[4],'参数2'::row[5],'参数3'::row[6],}}
def load_excel_to_dict(file_path):# 这个应该放在初始化阶段，
    wb = load_workbook(file_path)
    sheet = wb.active
    data_dict = {}
    row_count = 0  # 添加行计数器
    for row in sheet.iter_rows(values_only=True):
        if row_count < 100:  # 检查是否小于10行
            if row[0]:  # 确保第一列不为空
                key = row[0] #data_dict[key] ={} 构造字典
                #data_dict[key] = {'关键字': row[1], '数据量': row[3], '数据1': row[4]}
                data_dict[key] ={'功能码': row[1], '操作2': row[2], '数据量N': row[3], '参数1': row[4], '参数2':row[5], '参数3':row[6]}
                row_count += 1  # 增加行计数器
        else:
            break  # 如果达到10行，退出循环
    return data_dict

# 在模块导入时执行数据
Config_Dict = load_excel_to_dict(r'D:\keytest3.xlsx')


def process_excel_data(received_keywords,data_dict):
    # 遍历字典中的每一项
    #{'功能码': row[1], '操作2': row[2], '数据量N': row[3], '参数1':: row[4], '参数2'::row[5], '参数3'::row[6]}
    for key, row_data in data_dict.items():
        # 使用get方法安全地访问字典中的键，避免KeyError
        #print(
        #    f"Key({key}): 功能码-{row_data.get('功能码')}, 操作2-{row_data.get('操作2')}, 数据量N-{row_data.get('数据量N')}, 参数1-{row_data.get('参数1')}, 参数2-{row_data.get('参数2')}, 参数3-{row_data.get('参数3')}")
        # 直接使用row_data作为第二参数
        funccodestr = row_data['功能码']
        #row_data是一个字典，它包含了从Excel中读取的一行数据。当遍历data_dict时，row_data就是data_dict[key]的结果，
        #print(f"--rcv: '{key}.")
        if key in received_keywords:
            print(f"Received keyword '{key}' matches '{key}' in the dictionary.")

            funccode_str = row_data['功能码']
            option_str = row_data['操作2']
            total_num = int(row_data['数据量N'])
            param1_str = row_data['参数1']
            param2_str = row_data['参数2']
            param3_str = row_data['参数3']
            tuple_data = (funccode_str, option_str, total_num, param1_str, param2_str, param3_str)
            #print(f"功能码: {funccode_str}")
            #print(f"操作2: {option_str}")
            #print(f"数据量N: {total_num}")
            #print(f"参数1: {param1_str}")
            #print(f"参数2: {param2_str}")
            #print(f"参数3: {param3_str}")
            return tuple_data
       ## else:
       #     print(f"Received keyword '{key}' does not match any key in the dictionary.")




